<?php
/**
 * 系统函数库，请勿修改 function.php
 * Author: 勾国印 (phper@gouguoyin.cn) 
 * Date: 2015年12月21日 下午3:32:16
*/

/**
 * 统一资源定位
 * @param string $model 数据表名
 * @param array/int 过滤条件,类型为int时必须是主键
 * @param string $field 查询字段，为空时返回数组
 * @return array/string
 */
if (!function_exists('_uri')) {
    function _uri($model, $filter, $field = null)
    {
        if(!$filter){
            return ;
        }

        $model = M($model);

        if(is_numeric($filter)){
            //获取主键字段名
            $pk_field = $model->getPk();

            $condition[$pk_field]  = $filter;
        }else{
            $condition = $filter;
        }

        if(!$field){
            $info = $model->where($condition)->find();
        }else{
            $info = $model->where($condition)->getField($field);
        }
        return $info;
    }
}


/**
 * 获取数据列表
 * @param string $model 模型名，如goods
 * @param array $filter 筛选条件，如array('status' => 1);
 * @param string $orderby 排序方式，如'id desc'
 * @param int $num 调用数目,0表示全部
 * @return array
 */
if (!function_exists('_list')) {
    function _list($model, $filter = array(), $num = 0, $order = 'id desc')
    {
        if(!$model){
            return ;
        }

        $list = M($model)->where($filter)->order($order)->limit($num)->select();

        return $list;
    }
}

/**验证字段的值是否唯一
 * @param string $model 模型名
 * @param array $where
 * @param int $id
 * @return bool
 */
if (!function_exists('_only')) {
    function _only($model, $where, $id = null)
    {
        if(!$model || !$where){
            return ;
        }
        $model = M($model);
        $condition = array();

        if ($id) {
            //获取主键字段名
            $pk_field = $model->getPk();
            $condition[$pk_field] = array('neq', $id);
        }

        if (is_array($where)) {
            //获取键名
            $key = key($where);
            //获取值
            $value = current($where);

            $condition[$key] = $value;
        } else {
            return false;
        }

        $result = $model->where($condition)->find();

        if ($result) {
            return false;
        } else {
            return true;
        }

    }
}

/**
 * 获取上传图片的绝对路径
 * @param int $attachment_id 附件id
 * @return string
 */
if (!function_exists('_image')) {
    function _image($attachment_id)
    {
        if(!$attachment_id){
            return ;
        }

        $attachment_id = (int)$attachment_id;
        $attachment_info = _uri('attachment', $attachment_id);
        if (!$attachment_info) {
            return __ROOT__ . '/static/images/default.jpg';
        } else {
            return __ROOT__ . '/uploads' . $attachment_info['path'] . $attachment_info['save_name'] . '.' . $attachment_info['suffix'];
        }
    }
}


/**
 * 获取上传文件的绝对路径
 * @param int $attachment_id 附件id
 * @return string
 */
if (!function_exists('_file')) {
    function _file($attachment_id)
    {
        if(!$attachment_id){
            return ;
        }

        $attachment_id = (int)$attachment_id;
        if (!$attachment_id) {
            return;
        } else {
            $attachment_info = _uri('attachment', $attachment_id);
            return SITE_URL . '/uploads' . $attachment_info['path'] . $attachment_info['save_name'] . '.' . $attachment_info['suffix'];
        }
    }
}

/**
 * 分页函数
 * @param number $total 总数量
 * @param number $num 每页显示数量
 * @return obiect
 */
if (!function_exists('P')) {
    function P($total, $num = 10)
    {
        if (!$total) {
            return false;
        }

        $page = new Common\Lib\Page($total, $num);
        return $page;
    }
}


/**
 * 发送邮件
 * @param array/string $address 发送到的邮件地址，多个以数组形式
 * @param string $title 邮件标题
 * @param string $message 邮件内容，支持html
 * @return boolean
 */
if (!function_exists('send_email')) {
    function send_email($address, $title, $message)
    {

        if(!$address){
            return ['status' => false, 'msg' => '缺少收件地址'];
        }

        if(!$title){
            return ['status' => false, 'msg' => '缺少邮件标题'];
        }

        if(!$message){
            return ['status' => false, 'msg' => '缺少收件内容'];
        }
        // 获取邮箱配置信息
        $emai_config = array();
        $emai_config = config_helper::get_config_array('email');

        extract($emai_config);

        if(!$email_user || !$email_password || !$email_host || !$email_title){
            return ['status' => false, 'msg' => '缺少必要配置参数'];
        }

        Vendor('PHPMailer.class#phpmailer');

        $mail = new \PHPMailer();

        // 使用SMTP方式发送
        $mail->IsSMTP();

        // 邮局服务器地址
        $mail->Host = $email_host;

        // 邮局服务器端口
        $mail->Port = '25';

        // 启用SMTP验证功能
        $mail->SMTPAuth = true;

        // 发件人email地址
        $mail->Username = $email_user;

        // 发件人email密码
        $mail->Password = $email_password;

        // 发件人email地址
        $mail->From = $email_user;

        // 发件人昵称
        $mail->FromName = $email_title;

        // 收件人地址，可以替换成任何想要接收邮件的email信箱
        $mail->AddAddress($address);

        // 是否使用HTML格式
        $mail->IsHTML(true);

        // 邮件标题
        $mail->Subject = $title;

        // 邮件内容
        $mail->Body = $message;

        if(!$mail->Send())
        {
            return ['status' => false, 'msg' => $mail->ErrorInfo];

        }else{
            return ['status' => true, 'msg' => '发送成功'];
        }

    }
}







